// 转换属性结构
// 参数+逻辑处理+返回值
// 参数：未经处理转化普通的后端直接返回的平铺数组
// 逻辑：树形处理逻辑
// 返回值：处理之后的tree数组

/**
 * 核心逻辑：平铺转树形 寻找父节点的过程 就是通过pid去匹配id的过程
 * 实施流程：
 *    1. 遍历原数组，以数组中的每一项的id作为key，每一项本身作为value形成一个对象map【方便查找】
 *    2. 遍历原数组 通过pid去匹配id 如果匹配上就把当前项添加到匹配项的children属性中；如果没有发生匹配 则代表当前项本身就是最外层节点 它没有父节点 直接把它push到treeList中
 * 匹配：【 === 】小技巧：如果取到了就是匹配上了
 */

export function transTree (arr) {
  const newArr = []
  const map = {}
  arr.forEach(item => {
    item.children = [] // 判断数据是否有子级   没有则进行子级的添加
    map[item.id] = item // 添加对应的映射关系
  })
  arr.forEach(item => {
    if (map[item.pid]) {
      map[item.pid].children.push(item)
    } else {
      newArr.push(item)
    }
  })
  return newArr
}

// ======================================

